package org.reyton.service;

import org.reyton.entity.BizClaimVoucher;
import org.reyton.entity.BizClaimVoucherDetail;
import org.reyton.entity.PageBean;
import org.reyton.entity.SysEmployee;

import java.util.List;

/**
 * 报销单明细表服务接口
 * Created by reyton on 16-12-1.
 */
public interface BizClaimVoucherService {

    /***
     * 保存报销单与明细
     * @param isFirstCreate 是否第一次新建报销单
     * @param bizClaimVoucher 报销单实体
     * @param bizClaimVoucherDetail 报销单明细实体
     */
    void saveClaimVoucherAndDetail(boolean isFirstCreate,BizClaimVoucher bizClaimVoucher, BizClaimVoucherDetail bizClaimVoucherDetail);

    /***
     * 更新报销单总价
     * @param bizClaimVoucher 报销单实体
     */
    void updateAccount(BizClaimVoucher bizClaimVoucher);

    /***
     * 新增一张报销单
     * @param bizClaimVoucher 报销单实体
     */
    void saveClaimVoucher(BizClaimVoucher bizClaimVoucher);

    /***
     * 更新报销单事由
     * @param bizClaimVoucher 报销单实体
     */
    void updateDes(BizClaimVoucher bizClaimVoucher);

    /***
     * 更新报销单状态
     * @param bizClaimVoucher 报销单实体
     */
    void updateStatus(BizClaimVoucher bizClaimVoucher);

    /***
     * 根据员工ID进行分页查询
     * @param sysEmployee 员工实体类
     * @param pageSize 页面大小
     * @param pageIndex 页码
     * @return 页面的实体集合
     */
    PageBean<BizClaimVoucher> findPageById(SysEmployee sysEmployee,int pageSize,int pageIndex);
    /***
     * 根据待审核人ID进行分页查询
     * @param sysEmployee 员工实体类
     * @param pageSize 页面大小
     * @param pageIndex 页码
     * @return 页面的实体集合
     */
    PageBean<BizClaimVoucher> findPageByNextDealSn(SysEmployee sysEmployee,int pageSize,int pageIndex);

    /***
     * 删除报销单
     * @param bizClaimVoucher 报销单实体
     */
    void deleteClaimVoucher(BizClaimVoucher bizClaimVoucher);

    /***
     * 根据ID查询报销单
     * @return 报销单实体
     */
    BizClaimVoucher findById(BizClaimVoucher bizClaimVoucher);
}
